﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp3
{

//    一、编写一个控制台应用程序，接受用户输入的两个整数和一个操作符，以实现对两个整数的加、减、乘、除运算，并显示出计算结果。

//1、创建Calculate积累，其中包含两个整型的protected成员，用以接收用户输入的两个整数。定义一个DisplayResult()虚方法，计算并输出结果。
//2、定义四个类继承自Calculate类，分别重写DisplayResult()方法，实现两个整数的加、减、乘、除运算，并输出结果。
//3、根据用户输入的操作符，实例化相应的类，完成运算并输出结果。
//4、在主类中添加一个方法，形参为父类对象，根据传递实参的类型，调用方法，实现计算和显示结果。

    class Shape
    {
        private string color;
        public string Color { get; set; }
       
        public virtual void GetArea(double num) { }
    }
    class Circle : Shape//圆形类
    {
        private double radius;
        public double Radius { get; set; }

        //引用父类
        public override void GetArea(double num1)
        {
            double area = 0;
            area = 3.14 * num1 * num1;
            Console.WriteLine("半径{0}的圆形面积是：{1}", num1, area);
        }
    }
    class Square : Shape//正方形类
    {
        private double sidelen;
        public double Sidelen { get; set; }

       
        public override void GetArea(double num1)
        {
            double area = 0;
            area = num1 * num1;
            Console.WriteLine("边长是{0}的正方形面积是：{1}", num1, area);
        }
    }
    class Program1
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请选择执行运算方法前的序号：1、圆形面积 2、正方形面积");
            int key = int.Parse(Console.ReadLine());

            Console.WriteLine("请输入要计算的半径或边长：");
            double num1 = double.Parse(Console.ReadLine());

            Shape tx;
            switch (key)
            {
                case 1:
                    tx = new Circle();
                    break;
                case 2:
                    tx = new Square();
                    break;
                default:
                    Console.WriteLine("请重新选择");
                    tx = new Circle();
                    break;
            }
            Sele(tx, num1);
            Console.ReadKey();
        }
        static void Sele(Shape tx, double num1)
        {
            tx.GetArea(num1);
        }
    }
}

